1. Field of the Invention
The present invention relates communication sessions and, more particularly, to a method and apparatus for including web content in a virtual environment.
2. Description of the Related Art
Virtual environments simulate actual or fantasy 3-D environments and allow for many participants to interact with each other and with constructs in the environment via remotely-located clients. One context in which a virtual environment may be used is in connection with gaming, although other uses for virtual environments are also being developed.
In a virtual environment, an actual or fantasy universe is simulated within a computer processor/memory. Multiple people may participate in the virtual environment through a computer network, such as a local area network or a wide area network such as the Internet. Each player selects an “Avatar” which is often a three-dimensional representation of a person or other object to represent them in the virtual environment. Participants send commands to a virtual environment server that controls the virtual environment to cause their Avatars to move within the virtual environment. In this way, the participants are able to cause their Avatars to interact with other Avatars and other objects in the virtual environment.
A virtual environment often takes the form of a virtual-reality three dimensional map, and may include rooms, outdoor areas, and other representations of environments commonly experienced in the physical world. The virtual environment may also include multiple objects, people, animals, robots, Avatars, robot Avatars, spatial elements, and objects/environments that allow Avatars to participate in activities. Participants establish a presence in the virtual environment via a virtual environment client on their computer, through which they can create an Avatar and then cause the Avatar to “live” within the virtual environment.
As the Avatar moves within the virtual environment, the view experienced by the Avatar changes according to where the Avatar is located within the virtual environment. The views may be displayed to the participant so that the participant controlling the Avatar may see what the Avatar is seeing. Additionally, many virtual environments enable the participant to toggle to a different point of view, such as from a vantage point outside of the Avatar, to see where the Avatar is in the virtual environment.
The participant may control the Avatar using conventional input devices, such as a computer mouse and keyboard. The inputs are sent to the virtual environment client which forwards the commands to one or more virtual environment servers that are controlling the virtual environment and providing a representation of the virtual environment to the participant via a display associated with the participant's computer.
Depending on how the virtual environment is set up, an Avatar may be able to observe the environment and optionally also interact with other Avatars, modeled objects within the virtual environment, robotic objects within the virtual environment, or the environment itself (i.e. an Avatar may be allowed to go for a swim in a lake or river in the virtual environment). In these cases, client control input may be permitted to cause changes in the modeled objects, such as moving other objects, opening doors, and so forth, which optionally may then be experienced by other Avatars within the virtual environment.
“Interaction” by an Avatar with another modeled object in a virtual environment means that the virtual environment server simulates an interaction in the modeled environment, in response to receiving client control input for the Avatar. Interactions by one Avatar with any other Avatar, object, the environment or automated or robotic Avatars may, in some cases, result in outcomes that may affect or otherwise be observed or experienced by other Avatars, objects, the environment, and automated or robotic Avatars within the virtual environment.
A virtual environment may be created for the user, but more commonly the virtual environment may be persistent, in which it continues to exist and be supported by the virtual environment server even when the user is not interacting with the virtual environment. Thus, where there is more than one user of a virtual environment, the environment may continue to evolve when a user is not logged in, such that the next time the user enters the virtual environment it may be changed from what it looked like the previous time.
Virtual environments are commonly used in on-line gaming, such as for example in online role playing games where users assume the role of a character and take control over most of that character's actions. In addition to games, virtual environments are also being used to simulate real life environments to provide an interface for users that will enable on-line education, training, shopping, business collaboration, and other types of interactions between groups of users and between businesses and users.
As Avatars encounter other Avatars within the virtual environment, the participants represented by the Avatars may elect to communicate with each other. For example, the participants may communicate with each other by typing messages to each other or an audio bridge may be established to enable the participants to talk with each other.
There are times when it would be advantageous for web content to be displayed within the virtual environment. For example, if the virtual environment is used in a retail capacity, it may be desirable to display web content about particular products within the virtual environment. Unfortunately, virtual environment engines are typically engineered with the assumptions that textures (bitmaps on 3D surfaces) do not change regularly. Thus, although the web content may be mapped to a surface as a texture, updating the content and enabling users to interact with the content is challenging.
In a business context, where the three dimensional virtual environment is being used for business collaboration, it is important for the users to have a consistent view of the virtual environment. It is difficult for people to collaborate if they are looking at different things. Where web content is to be included in the virtual environment, it therefore is important that the same web content be shown to all viewers.
One way to include web content is to manually convert the web content into a static two dimensional texture, and then distribute the texture to the multiple users of the three dimensional computer-generated virtual environment. This solution is reasonably bandwidth efficient, as the static texture can easily be cached at each client. However, it must be manually updated and does not provide interaction by the users. Specifically, since the content is static, the users cannot interact with the web content, for example to access links to other regions of the web site.
Another way to include web content is to render the web content dynamically at the server, and push the result out to the users as a 2D texture. This solution solves the manual update problem mentioned above, but still does not enable the users to interact with the web pages. Also, since the web content is dynamically rendered, the bandwidth requirements may be slightly higher than where the web content is manually converted. Additionally, the web content is typically rendered in the server using a custom renderer, which may not support all the features of a consumer browser. Thus, the type of content that may be included, such as FLASH video and other content that is typically supported by plugins in customer web browsers, may be limited.
A third way to include web content is to map the content directly to the 3D surfaces. This solution enables each user to interact with the content, for example by clicking on links on the web content, to cause new content to be provided on the 3D surface. Unfortunately, mapping applications to the 3D surfaces of the virtual environment is extremely bandwidth intensive. Specifically, the server will need to render the web content on the surface and push the new content out to each of the users in the vicinity of the surface. This will need to be performed each time the content changes and, for content such as full motion video, may consume considerable bandwidth. Additionally, since the content may be controlled by any of the users of the virtual environment, the server will need to implement a way to mediate who gets control when more than one user tries to manipulate the application at the same time. Accordingly, it would be advantageous to provide a new way to enable web content to be included in a virtual environment.